package com.tutos.ui.monitor;

import java.util.ArrayList;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import com.tutos.dao.EstudianteDAO;
import com.tutos.dao.MensajeDAO;
import com.tutos.dao.MonitorDAO;
import com.tutos.model.Estudiante;
import com.tutos.model.Monitor;
import com.tutos.ui.TutosApplication;
import com.tutos.ui.student.MensajeComponenteEstudiante;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window;

public class MonitorData {

	private AbsoluteLayout mainLayout;
	private Label LblUbic;
	private Label lblInfoAc;
	private Label label_8;
	private Label label_5;
	private Label label_2;
	private Label lblCentroData;
	private Label lblCentro;
	private Label lblTelefono;
	private String xhtml;
	private Component rating;
	private Embedded foto;
	private Label label_1;
	private Label lblNameDate;
	private Button Btmcontacto;
	private Monitor monitor = null;

	private ArrayList<String> correosSeleccionados = new ArrayList<String>();

	private EstudianteDAO est = new EstudianteDAO();
	private MonitorDAO mon = new MonitorDAO();
	private MensajeDAO mensajeDAO = new MensajeDAO();
	private Subject currentUser = SecurityUtils.getSubject();
	private Estudiante estudianteActual;
	
	private String correoDestinatario;
	private MensajeComponenteEstudiante mensajeComponente;
	
	public MonitorData(Component rst) {
		rating = rst;
		rating.setWidth("105px");
		rating.setCaption("Calificacion:");
		buildMainLayout();
		//setCompositionRoot(mainLayout);
	}

	public void init(Monitor monitor) {
		this.monitor = monitor;
		
		setValues();

	}

	private void enviarMensaje() {
		
		correosSeleccionados.clear();
		correoDestinatario = monitor.getCorreo();
		correosSeleccionados.add(correoDestinatario);
		

		estudianteActual = est.getEstudianteByCorreo((String) currentUser
				.getSession().getAttribute("username"));
		
		mensajeComponente = new MensajeComponenteEstudiante(
				est, mon, mensajeDAO, correosSeleccionados, estudianteActual);

		final Window ventanaMensaje = new Window("Contactar");

		ventanaMensaje.setSizeUndefined();
		ventanaMensaje.addComponent(mensajeComponente);
		ventanaMensaje.setWidth("580px");
		ventanaMensaje.setHeight("-1px");

		ventanaMensaje.setModal(true);
		ventanaMensaje.setResizable(false);
		
		// abrir la ventana para responder el mensaje
		TutosApplication.getInstance().getMainWindow().addWindow(ventanaMensaje);
		ventanaMensaje.setVisible(true);
		
	}

	private void buildMainLayout() {
		
		xhtml = "<i	>This</i > is an <b >XHTML</b > formatted label";
		// common part: create layout
		mainLayout = new AbsoluteLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("700px");
		mainLayout.setHeight("499px");
		mainLayout.setMargin(true);

		// top-level component properties
		// BtmContacto

		Btmcontacto = new Button();
		Btmcontacto.setDescription("Contactar");
		Btmcontacto.setImmediate(true);		
		Btmcontacto.setIcon(new ThemeResource("mensaje.gif"));  
		Btmcontacto.addListener(new ClickListener() {

			@Override
			public void buttonClick(ClickEvent event) {
				enviarMensaje();

			}

		});
		mainLayout.addComponent(Btmcontacto, "top:300.0px;left:619.0px;");




		// embedded_1
		ExternalResource externalResource = new ExternalResource(
				"http://www.fashionally.com/images/default_profile_pic.jpg");
		foto = new Embedded("", externalResource);
		foto.setImmediate(false);
		foto.setWidth("230px");
		foto.setHeight("210px");

		// embedded_1.setSource(new ThemeResource(
		// "http://www.usarfacebook.com/wp-content/uploads/2011/10/eliminar-foto-perfil-facebook.jpg"));
		// embedded_1.setType(1);
		foto.setMimeType("image/jpg");
		mainLayout.addComponent(foto, "top:60.0px;left:500.0px;");

		mainLayout.addComponent(rating, "top:300.0px;left:500.0px;");

		// label_1
		label_1 = new Label(xhtml, Label.CONTENT_XHTML);
		label_1.setImmediate(false);
		label_1.setWidth("100.0%");
		label_1.setHeight("40px");
		label_1.setValue("<FONT SIZE=+1><b>Nombre:<b></FONT>");
		mainLayout.addComponent(label_1,
				"top:79.0px;right:215.0px;left:17.0px;");
		
		// lblCentro
		lblCentro = new Label(xhtml, Label.CONTENT_XHTML);
		lblCentro.setImmediate(false);
		lblCentro.setWidth("100.0%");
		lblCentro.setHeight("40px");
		lblCentro.setValue("<FONT SIZE=+1><b>Centro Educativo:<b></FONT>");
		mainLayout.addComponent(lblCentro,
				"top:117.0px;right:195.0px;left:17.0px;");


		// label_2
		label_2 = new Label(xhtml, Label.CONTENT_XHTML);
		label_2.setImmediate(false);
		label_2.setWidth("100.0%");
		label_2.setHeight("40px");
		label_2.setValue("<FONT SIZE=+1><b>Telefono:<b></FONT>");
		mainLayout.addComponent(label_2,
				"top:160.0px;right:175.0px;left:17.0px;");


		// label_5
		label_5 = new Label(xhtml, Label.CONTENT_XHTML);
		label_5.setImmediate(false);
		label_5.setWidth("100.0%");
		label_5.setHeight("40px");
		label_5.setValue("<FONT SIZE=+1><b>Info Academica:<b></FONT>");
		mainLayout.addComponent(label_5,
				"top:200.0px;right:152.0px;left:17.0px;");

		// label_8
		label_8 = new Label(xhtml, Label.CONTENT_XHTML);
		label_8.setImmediate(false);
		label_8.setWidth("100.0%");
		label_8.setHeight("40px");
		label_8.setValue("<FONT SIZE=+1><b>Ubicacion<b></FONT>");
		mainLayout.addComponent(label_8,
				"top:240.0px;right:155.0px;left:17.0px;");

		
		
		// lblNameDate
		lblNameDate = new Label(xhtml, Label.CONTENT_XHTML);
		lblNameDate.setImmediate(false);
		lblNameDate.setWidth("100.0%");
		lblNameDate.setHeight("40px");
		lblNameDate.setValue("Label");
		mainLayout.addComponent(lblNameDate,
				"top:79.0px;right:154.0px;left:200.0px;");
		
		// lblCentroDat
		lblCentroData = new Label(xhtml, Label.CONTENT_XHTML);
		lblCentroData.setImmediate(false);
		lblCentroData.setWidth("100.0%");
		lblCentroData.setHeight("-1px");
		lblCentroData.setValue("Label");
		mainLayout.addComponent(lblCentroData,
				"top:118.0px;right:153.0px;left:200.0px;");
		
		// lblTelefono
		lblTelefono = new Label(xhtml, Label.CONTENT_XHTML);
		lblTelefono.setImmediate(false);
		lblTelefono.setWidth("100.0%");
		lblTelefono.setHeight("40px");
		lblTelefono.setValue("Label");
		mainLayout.addComponent(lblTelefono,
				"top:160.0px;right:084.0px;left:200.0px;");
		
		// lblInfoAc
		lblInfoAc = new Label(xhtml, Label.CONTENT_XHTML);
		lblInfoAc.setImmediate(false);
		lblInfoAc.setWidth("100.0%");
		lblInfoAc.setHeight("-1px");
		lblInfoAc.setValue("Label");
		mainLayout.addComponent(lblInfoAc,
				"top:200.0px;right:085.0px;left:200.0px;");
		

		// LblUbic
		LblUbic = new Label(xhtml, Label.CONTENT_XHTML);
		LblUbic.setImmediate(false);
		LblUbic.setWidth("100.0%");
		LblUbic.setHeight("40px");
		LblUbic.setValue("Label");
		mainLayout.addComponent(LblUbic,
				"top:242.0px;right:194.0px;left:200.0px;");
		

	}

	public Component getComponent() {
		return mainLayout;
	}

	public void setValues() {
		lblNameDate.setValue("<FONT SIZE=+1>"+monitor.getNombre()+"</FONT>");
		lblCentroData.setValue("<FONT SIZE=+1>"+monitor.getCentroEducativo()+"</FONT>");
		lblTelefono.setValue("<FONT SIZE=+1>"+monitor.getTelefono().toString()+"</FONT>");
		lblInfoAc.setValue("<FONT SIZE=+1>"+monitor.getInfoAcademica()+"</FONT>");
		LblUbic.setValue("<FONT SIZE=+1>"+monitor.getUbicacion()+"</FONT>");
	}
}
